/* *
 * 题目：坐标轴上从左到右依次的点为a[0],a[1],a[2],...,a[n-1],设一根木棒的长度为L，求L最多能覆盖坐标轴的几个点？
 * 分析：实际上是求满足a[j]-a[i] <= L && a[j+1]-a[i] > L时，j与i中间的所有点个数的最大值，即求出j-i+1的最大值。
 * 方法也很简单：直接从左到右扫描，两个指针i和j，i从位置0开始，j从位置1开始，如果a[j]-a[i]<=L则j++并记录中间经过的点数;
 * 如果a[j]-a[i]>L,则j--回退，覆盖点的个数-1回到刚好满足条件的时候，将满足条件的最大值与所求最大值比较，然后i++,j++直到求出最大的点的个数。
 * 注意：可能存在不同的覆盖点但覆盖的长度相同，此时只选第一次覆盖最多的点。
 *
 * */

#include <iostream>

using namespace std;

int maxCover(int a[], int n, int L)
{
	int count=2, maxCount=1, start;
	int i=0,j=1;

	while(i<n && j<n)
	{
		while(j<n && (a[j]-a[i]<=L))
		{
			j++;
			count++;
		}
		j--;//退回到满足条件的j
		count--;

		if(maxCount<count)
		{
			start=i;
			maxCount=count;
		}
		i++;
		j++;
	}
	cout<<"covered point:"<<endl;
	for(i = start; i < start+maxCount; ++i)
	{
		cout<<a[i]<<" ";
	}
	cout<<endl;
	return maxCount;
}
int main()
{
	/*
	int a[] = {1,3,7,8,10,11,12,13,15,16,17,18,21};
	cout<<"max count:"<<maxCover(a,13,8)<<endl;

	int b[] = {1,2,3,4,5,100,1000};
	cout<<"max count:"<<maxCover(b,7,8)<<endl;
	*/
	int n, L;
	while(cin>>n>>L)
	{
		int *a = new int[n];
		for(int i=0;i<n;i++)
		{
			cin >> a[i];
		}
		cout<<"max count:"<<maxCover(a,n,L)<<endl;
		delete[] a;
	}
	return 0;
}
